package cn.com.surker.production.entity;

import cn.com.surker.base.BaseEntity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 生产车辆表
 * </p>
 *
 * @author admin
 * @since 2024-09-04
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("production_tran_car")
public class TranCar extends BaseEntity implements Serializable {

	private static final long serialVersionUID = 1L;

	/**
	 * 标识
	 */
	@TableId(value = "id", type = IdType.AUTO)
	private Long id;

	/**
	 * 公司ID,废弃
	 */
	@Deprecated
	private Long orgId;

	/**
	 * 车牌号
	 */
	@NotBlank(message = "请输入车牌号")
	private String carNo;

	/**
	 * 规格
	 */
	private String norms;

	/**
	 * 载重量
	 */
	// @NotNull(message = "请输入载重量")
	@NotNull(message = "请输入标准载重量")
	@Min(value = 2, message = "标准载重量不能小于2吨")
	@Max(value = 100, message = "标准载重量不能大于100吨")
	private Double loadWeight;

	/**
	 * 最大载重量
	 */
	@NotNull(message = "请输入最大载重量")
	@Min(value = 2, message = "最大载重量不能小于2吨")
	@Max(value = 100, message = "最大载重量不能大于100吨")
	private Double maxWeight;

	/**
	 * 皮重
	 */
	@NotNull(message = "请输入皮重")
	@Min(value = 2, message = "皮重不能小于2吨")
	@Max(value = 50, message = "皮重不能大于50吨")
	private Double tare;

	/**
	 * 结算类型（CarModelTypeEnum）
	 * 结算类型改用和车队合同关联中的结算类型
	 */
	//private Integer modelType;

	/**
	 * 燃油类型(CarFuelEnum枚举类型)
	 */
	@NotNull(message = "请选择燃油类型")
	private Integer carFuel;

	/**
	 * 载重方量
	 */
	@NotNull(message = "请输入标准载重方量,单位:方")
	private Double stere;

	/**
	 * 最大载重方量
	 */
	@NotNull(message = "请输入最大载重方量,单位:方")
	private Double maxStere;

	/**
	 * 使用类型(0:外租1:本站3:其他)
	 */
	private Integer useType;

	/**
	 * 车辆状态
	 * 使用枚举:CarWorkStatusEnum
	 *
	 */
	private Integer carStatus;

	/**
	 * 签到时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date signTime;


	/**
	 * 发货单ID
	 */
	private Long invoiceId;

	/**
	 * 签到状态(0:空闲，1:签到,2:排队3:运输)
	 */
	private Integer signType;

	/**
	 * 驾驶员ID
	 */
	private Long driverId;

	/**
	 * 驾驶员
	 */
	private String driver;


}
